// Copyright (C) 2023 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<北京小羊驼科技有限公司>，授权编号：<NT231212144350>，代码指纹：<A.702363430.550>，技术对接人微信：<ID: wxid_wbyootvkdcgj22>】
// 【授权寄送：<收件：苏先生、地址：北京市大兴区北京密码西区6号楼1单元301、电话：18613885610、邮箱：bd@huiyuanxiang-inc.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
//package com.x52im.rainbowchat.logic.main;
//
//import java.util.Observer;
//
//import android.app.Activity;
//import android.app.TabActivity;
//import android.content.ComponentName;
//import android.content.Context;
//import android.content.Intent;
//import android.content.ServiceConnection;
//import android.os.Bundle;
//import android.os.IBinder;
//import android.util.Log;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.widget.ImageView;
//import android.widget.TabHost;
//import android.widget.TabHost.TabSpec;
//import android.widget.TextView;
//
//import com.eva.android.AppManager;
//import MyApplication;
//import com.x52im.rbchat.R;
//import AlarmsActivity;
//import ObserverFactory;
//import FriendListActivity;
//import GroupsActivity;
//import MyActivity;
//import GeniusService;
//
//public class PortalActivityOld extends TabActivity
//{
//	private final String TAG = MainActivity.class.getSimpleName();
//
//	/** 导航栏TabHost */
//	private TabHost	tabNavigator;
//
//	/** 视频聊天请求观察者. */
//	private Observer viodeoChatRequestObserver = new ObserverFactory.ViodeoChatRequestObserver(this);
//	/** 实时语音聊天请求观察者. */
//	private Observer realTimeVoiceChatRequestForNotIntChatUIObserver = new ObserverFactory.RealTimeVoiceChatRequestForNotIntChatUIObserver(this);
//
//	/**
//	 * 捕获back键，实现调用 {@link LoginActivity#doLogout(Activity, boolean, Observer)} (Context)}方法.
//	 */
//	@Override
//	public void onBackPressed()
//	{
//		LoginActivity.doLogout(PortalActivityOld.this, true, null);
//	}
//
//	public void onCreate(Bundle savedInstanceState)
//	{
//        super.onCreate(savedInstanceState);
//
//		//----------------------------- APP 异常自救代码 START
//		if(this.appHearthCheckInvalid())
//			return;
//		//----------------------------- APP 异常自救代码 END
//
//		// 添加到RainbowChar的Activity管理器栈中（以便APP退出时即时释放）
//		AppManager.getAppManager().addActivity(this);
//
//        //初始化
//        init();
//
//		//启动后台服务
//		doBindService();
//    }
//
//	protected void onResume()
//	{
//		initObservers();
//		super.onResume();
//	}
//
////	protected void onPause()
////	{
////		clearObservers();
////		super.onPause();
////	}
//
//	private void init()
//	{
//		//养成良好习惯：总体布局首先被设定
//		this.setContentView(R.layout.main_portal);
//
//		//TAB 的tag常量定义
//		String TAB_TAG_INDEX = this.getString(R.string.portal_activity_news);
//		String TAB_TAG_MORE = this.getString(R.string.portal_activity_partner);
//		String TAB_TAG_GROUP = this.getString(R.string.portal_activity_group);
//		String TAB_TAG_EXIT = this.getString(R.string.portal_activity_mall);
//		String TAB_TAG_SETUP = this.getString(R.string.portal_activity_more);
//
//		tabNavigator = getTabHost();
//		//加入itemItem
//		tabNavigator.addTab(getTabSpec(TAB_TAG_INDEX, R.drawable.main_portal_tab_bg_mynotice
//				, new Intent(this, AlarmsActivity.class) ));
////		tabNavigator.addTab(getTabSpec(TAB_TAG_MORE, R.drawable.main_portal_tab_bg_myfunctions
////				, new Intent(this, FriendsListActivity.class) ));
//		tabNavigator.addTab(getTabSpec(TAB_TAG_MORE, R.drawable.main_portal_tab_bg_myfunctions
//				, new Intent(this, FriendListActivity.class) ));
//		tabNavigator.addTab(getTabSpec(TAB_TAG_GROUP, R.drawable.main_portal_tab_bg_groups
//				, new Intent(this, GroupsActivity.class)
//		));
//		tabNavigator.addTab(getTabSpec(TAB_TAG_EXIT, R.drawable.main_portal_tab_bg_exit
//				, new Intent(this, com.x52im.mall.MainActivity.class)
//		));
//		tabNavigator.addTab(getTabSpec(TAB_TAG_SETUP, R.drawable.main_portal_tab_bg_moreitems
//				, new Intent(this, MyActivity.class)));
//
//		initListeners();
//		initDatasForSystem();
//
//		this.setTitle(this.getString(R.string.portal_activity_news));
//	}
//
//	private void initListeners()
//	{
//	}
//
//	// 初始化一些程序需要使用的数据放在此方法中
//	private void initDatasForSystem()
//	{
////		// 首先读取好友列表（好友列表必须在程序启动后首先读取，
////		// 否则后绪在好友上下线等地方将会因为没有好友列表数据而出错哦
////		new InitRosterDatas(this).execute();
//	}
//
//	private void initObservers()
//	{
//		// 设置视频聊天请求观察者
//		// 为何要使用观察者？理由与类{@link VideoActivity.BaseEventForVideoChatObserver}相似。
//		MyApplication.getInstance(this).getIMClientManager()
//				.getTransDataListener().setViodeoChatRequestObserver(viodeoChatRequestObserver);
//
//		// 设置实时语音聊天请求观察者
//		// 为何要使用观察者？理由与类{@link VideoActivity.BaseEventForVideoChatObserver}相似。
//		MyApplication.getInstance(this).getIMClientManager()
//				.getTransDataListener().setRealTimeVoiceChatRequestForNotIntChatUIObserver(realTimeVoiceChatRequestForNotIntChatUIObserver);
//	}
//
//	private void clearObservers()
//	{
//		// 取消视频聊天请求观察者
//		// 为何要使用观察者？理由与类{@link VideoActivity.BaseEventForVideoChatObserver}相似。
//		MyApplication.getInstance(this).getIMClientManager()
//				.getTransDataListener().setViodeoChatRequestObserver(null);
//
//		// 取消实时语音聊天请求观察者
//		// 为何要使用观察者？理由与类{@link VideoActivity.BaseEventForVideoChatObserver}相似。
//		MyApplication.getInstance(this).getIMClientManager()
//				.getTransDataListener().setRealTimeVoiceChatRequestForNotIntChatUIObserver(null);
//	}
//
//	/**
//	 * 返回一个导航栏上用的TabSpec对象.
//	 *
//	 * @param tag tabItem的tag（text也是用的这个）
//	 * @param imgResId 对应的图标资源id
//	 * @param i 对应的Intent
//	 * @return
//	 */
//	private TabSpec getTabSpec(String tag, int imgResId, Intent i)
//	{
//		TabSpec tabSpec = tabNavigator.newTabSpec(tag).
//		setIndicator(getTabItemView(imgResId, tag)).
//		setContent(i);
//		return tabSpec;
//	}
//	/**
//	 * 返回一个TabItem的UI对象.
//	 *
//	 * @param imgResId 对应的图标资源id
//	 * @param text 显示文本
//	 * @return
//	 */
//	private View getTabItemView(int imgResId, String text)
//	{
//		View view = LayoutInflater.from(this).inflate(R.layout.main_portal_tab_item, null);
//
//		ImageView imageView = (ImageView) view.findViewById(R.id.main_portal_tab_item_iconView);
//		if (imageView != null)
//			imageView.setImageResource(imgResId);
//
//		TextView textView = (TextView) view.findViewById(R.id.main_portal_tab_item_textView);
//		if (textView != null)
//			textView.setText(text);
//
//		return view;
//	}
//
//	//----------------------------- APP 异常自救代码 START
//	/**
//	 * 关于APP异常自救的原因、方案、实现逻辑等，请见 {@link MyApplication#appHearthCheckFlag} 字段的详细说明。
//	 *
//	 * @return true表示APP现场处于非正常状态，否则表示正常状态
//	 */
//	private boolean appHearthCheckInvalid()
//	{
//		try{
//			String className = getClass().getSimpleName();
//
//			// 处于异常现场了
//			if (MyApplication.appHearthCheckFlag == -1)
//			{
//				Log.w(TAG, "【APP异常现场检查-主】已在"+className+"中检测到APP异常现场，马上进" +
//						"入异常重启逻辑（即接力跳转到闪屏入口界面【第2/2步】）。。。");
//
//				Context ctx = MyApplication.getInstance2();
//
//				// 以下代码确保跳转到APP的主口界面（从而达到重启APP的效果）
//				Intent i = ctx.getPackageManager().getLaunchIntentForPackage(ctx.getPackageName());
//				// 没有FLAG_ACTIVITY_NEW_TASK这个flag，是无法借助Application实例启动activity的
//				i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
//				// 前往入口页
//				ctx.startActivity(i);
//
//				// 释放APP应用占用的资源(如去掉脏现场前的服务绑定、notification等等资源的释放)
//				LoginActivity.systemExit(ctx, false);
//
//				// 最后关闭本界面（本界面本身已处于脏现场中，能回到主入口界面就好了，不需要本界面了）
//				finish();
//
//				return true;
//			}
//			else
//			{
//				Log.d(TAG, "【APP异常现场检查-主】在"+className+"中未检测到APP异常现场，什么也不需要做！（MyApplication.appHearthCheckFlag="
//						+MyApplication.appHearthCheckFlag+"）");
//			}
//
//		}
//		catch (Exception e){
//			Log.w(TAG, e);
//		}
//
//		return false;
//	}
//	//----------------------------- APP 异常自救代码 END
//
//
//	//----------------------------- 后台服务相关代码，以后会加入更多功能 START
//	/** 后台服务对象（绑定RainbowChat后，确保RainbowChat能常驻内存，并
//	 * 在Android状态上显示出来，方便用户找到） */
//	private GeniusService boundService;
//
//	/** 绑定时需要使用的连接对象 */
//	private ServiceConnection serviceConnection = new ServiceConnection()
//	{
//		public void onServiceConnected(ComponentName className, IBinder service)
//		{
//			// This is called when the connection with the service has been
//			// established, giving us the service object we can use to
//			// interact with the service.  Because we have bound to a explicit
//			// service that we know is running in our own process, we can
//			// cast its IBinder to a concrete class and directly access it.
//			boundService = ((GeniusService.LocalBinder)service).getService();
//
//			// Tell the user about this for our demo.
////			WidgetUtils.showToast(getApplicationContext(), "DEBUG：后台服务已连接上了.", ToastType.INFO);
//		}
//
//		public void onServiceDisconnected(ComponentName className)
//		{
//			// This is called when the connection with the service has been
//			// unexpectedly disconnected -- that is, its process crashed.
//			// Because it is running in our same process, we should never
//			// see this happen.
//			boundService = null;
//
//			//注意：此此不能用FunctionListActivity.this而因用getApplicationContext(),因为本方法的调用是在
//			//FunctionListActivity.this对象被destroy时调用，所以如果用FunctionListActivity.this则会出错！
//			//（因为FunctionListActivity.this已经被销毁了）
////			WidgetUtils.showToast(getApplicationContext(), "DEBUG：与后台服务断开了连接.", ToastType.INFO);
//		}
//	};
//
//	/**
//	 * 将本activity与后台服务绑定起来.
//	 */
//	protected void doBindService()
//	{
//		//** 重要说明：放置于TabHost中的Activity不能直接this.bindService(..)，应使用
//		//   this.getApplicationContext().bindService(..)，否则将绑定不成功.独立使用时不会有这样的问题具体请见js留存的相关文档及说明.
//		this.getApplicationContext().bindService(new Intent(
//				this.getApplicationContext(), GeniusService.class)
//		, serviceConnection, Context.BIND_AUTO_CREATE);
////		serviceIsBound = true;
//	}
//
//	/**
//	 * 解绑服务（服务将失去功能，随时会被系统回收）.
//	 */
//	protected void doUnbindService()
//	{
////		if (serviceIsBound)
//		{
//			try{
//				// Detach our existing connection.
//				//** 重要说明：放置于TabHost中的Activity不能直接this.bindService(..)，耐听应使用
//				//this.getApplicationContext().bindService(..)，否则将绑定不成功.独立使用时
//				//不会有这样的问题具体请见js留存的相关文档及说明.
//				this.getApplicationContext().unbindService(serviceConnection);
////				serviceIsBound = false;
//			}
//			catch (Exception e){
////				Log.w(TAG, e);
//			}
//		}
//	}
//
//	/**
//	 * 重写父类方法，以便在本activity被销毁时自动解绑后台服务.
//	 *
//	 * @see #doUnbindService()
//	 */
//	@Override
//	protected void onDestroy()
//	{
//		Log.i(TAG, "onDestroy？");
//
//		// 清除观察者
//		clearObservers();
//
//		// 本activity被销毁就解绑服务（服务将失去功能，随时会被系统回收）
//		doUnbindService();
//
//		// 结束Activity&从RainbowChar的Activity管理器栈中移除（以便APP退出时即时释放）
//		AppManager.getAppManager().removeActivity(this);
//
//		super.onDestroy();
//	}
//	//----------------------------- 后台服务相关代码 END
//}
